class Initialize	{
public:
	//Whether to exit GamePlay loop
	bool finish;
	//Choice for Menus
	char choice;
	//Area in which you are in
	int area;  //current area
	int creatureType; //The creature's area-type	
	void currentArea();
	int randomNumber(int min, int max);
	Initialize();
}InitializeObject;

int Initialize::randomNumber(int min, int max)	{
	int random = rand() % (max - min + 1) + min;

	return random;
}

//Player Stats
class Player	{
public:
	int Strength;
	int Agility;
	int Accuracy;
	int Defence;
	int Health;
	int Damage;
	int Magic;
	int Experiance;
	int ExperianceNeeded;
	bool run;
	int AbilityPoints;
	void LevelUp(int points);
}PlayerObject;

class Fight	{
	void fightAlgorithm();
	void fightMenu();
	void magicMenu();
public:
	void fightProcedure();
}FightObject;

class Creatures	{
public:
	int CreatureHealth;
	int CreatureStrength;
	int CreatureAgility;
	int CreatureAccuracy;
	int CreatureDefence;
	int CreatureMagic;
	int CreatureExperiance;
	int CreatureDamage;
	string CreatureDescription;
	virtual void attributeAssigner();
	void creatureAssigner(int serialNumber);
}CreaturesObject;

class Attributes	{
public:
	void Inventory();
	void Stats();
}AttributesObject;

class Menu: private Fight	{
public:
	void Main_Menu();
private:
	int continueForward();
	void goBack();
	void Inventory();
	void skills();
}MenuObject;

Initialize::Initialize()	{
	area = 0;
	choice = NULL;
	finish = false;
	//Make player skills '0'
	PlayerObject.Health = PlayerObject.Strength = PlayerObject.Agility = PlayerObject.Accuracy = PlayerObject.Defence = PlayerObject.Magic = 1;
	CreaturesObject.CreatureHealth = CreaturesObject.CreatureAccuracy = CreaturesObject.CreatureAgility = CreaturesObject.CreatureDefence = CreaturesObject.CreatureMagic = CreaturesObject.CreatureStrength = 1;
	PlayerObject.ExperianceNeeded = 10;
}

void Player::LevelUp(int point)	{
	InitializeObject.choice = NULL;
	ExperianceNeeded *= 2;
	while(point > 0)	{
		AttributesObject.Stats();
		cout << "\nEnter the numbers individually to level up a skill\n" << endl;
		cout << "1. Health + 10\n";
		cout << "2. Strength + 1\n";
		cout << "3. Agility + 1\n";
		cout << "4. Accuracy + 1\n";
		cout << "5. Defence + 1\n";
		cout << "6. Magic + 5\n";
		cout << "Points left to spend: " << point << endl << endl;

		cin >> InitializeObject.choice;

		switch(InitializeObject.choice)	{
			case 061:
				Health += 10;
				point--;
				break;
			case 062:
				Strength++;
				point--;
				break;
			case 063:
				Agility++;
				point--;
				break;
			case 064:
				Accuracy++;
				point--;
				break;
			case 065:
				Defence++;
				point--;
				break;
			case 066:
				Magic += 5;
				point--;
				break;
			default:
				cout << "Invalid Character" << endl;
		}
		InitializeObject.choice = NULL;
	}
}